جزوه · فصل چهارم · جلسه ۴۵ · سطح دسترسی‌ها در لینوکس ← بازگشت به فهرست
📘 فصل چهارم · جلسه ۴۵ سطح دسترسی‌ها در لینوکس
📅 تاریخ: دوشنبه، ۲۶ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
🔐 قبل از شروع، یه مثال ساده:

سطح دسترسی در لینوکس مثل قفل درب یک ساختمان است. هر فایل و دایرکتوری سه نوع کاربر دارد: مالک، گروه و دیگران. هرکدام می‌توانند مجوزهای خواندن، نوشتن و اجرا داشته باشند.

▍ مبانی سطح دسترسی

هر فایل و دایرکتوری در لینوکس دارای سه نوع دسترسی برای سه گروه کاربری است:

هر کدام از این گروه‌ها می‌توانند سه نوع مجوز داشته باشند:

📌 نمایش مجوزها با ls -l:
┌──(ya3in㉿kali)-[~] └─$ ls -l -rw-r--r-- 1 ya3in ya3in 1024 Aug 17 10:00 file.txt drwxr-xr-x 2 ya3in ya3in 4096 Aug 17 10:00 dir/

توضیح:

  • اولین کاراکتر: نوع فایل (- = فایل معمولی، d = دایرکتوری، l = لینک)
  • سه کاراکتر بعدی: مجوزهای مالک (rwx)
  • سه کاراکتر بعدی: مجوزهای گروه (r-x)
  • سه کاراکتر آخر: مجوزهای دیگران (r--)

▍ انواع فایل‌ها در خروجی ls -l

کد توضیح
- فایل معمولی (متن، باینری، تصویر و ...)
d دایرکتوری
l لینک سمبلیک (Soft Link)
p Named Pipe (برای ارتباط بین پردازش‌ها)
s Socket (ارتباط شبکه‌ای)
b Block Device (مانند دیسک)
c Character Device (مانند دستگاه‌های سریال)

▍ تغییر مجوزها با chmod

• روش نمادین (Symbolic)

┌──(ya3in㉿kali)-[~] └─$ chmod u+x file.txt └─$ chmod go-r file.txt

توضیح:

• روش عددی (Octal)

هر مجوز یک عدد دارد: r=4، w=2، x=1

┌──(ya3in㉿kali)-[~] └─$ chmod 755 file.txt

توضیح: 755 یعنی:

📊 جدول مقادیر هشت‌عالی (Octal):
مقدار مجوز معنی
0 --- بدون دسترسی
1 --x فقط اجرا
2 -w- فقط نوشتن
3 -wx نوشتن و اجرا
4 r-- فقط خواندن
5 r-x خواندن و اجرا
6 rw- خواندن و نوشتن
7 rwx خواندن، نوشتن و اجرا

▍ تغییر مالک و گروه

chown (Change Owner)

┌──(ya3in㉿kali)-[~] └─$ sudo chown mabedini name.txt └─$ sudo chown mabedini:root name.txt

توضیح: chown مالک و گروه فایل را تغییر می‌دهد (نیاز به دسترسی root).

chgrp (Change Group)

┌──(ya3in㉿kali)-[~] └─$ sudo chgrp group1 file.txt

توضیح: فقط گروه فایل را تغییر می‌دهد.

▍ مجوزهای ویژه: SUID، SGID و Sticky Bit

• SUID (Set User ID)

وقتی SUID روی یک فایل اجرایی تنظیم شود، برنامه با مجوزهای مالک اجرا می‌شود، نه کاربری که آن را اجرا کرده است.

📝 مثال معروف:
┌──(ya3in㉿kali)-[~] └─$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 59640 Jan 25 2018 /usr/bin/passwd

توضیح: s در جای مجوز اجرای مالک نشان‌دهنده SUID است. passwd با مجوز root اجرا می‌شود تا بتواند فایل /etc/shadow را تغییر دهد.

┌──(ya3in㉿kali)-[~] └─$ chmod u+s myapp └─$ chmod 4750 myapp

توضیح: هر دو روش SUID را روی فایل myapp فعال می‌کنند. عدد 4 قبل از مجوزهای معمولی نشان‌دهنده SUID است.

• SGID (Set Group ID)

روی فایل‌های اجرایی: برنامه با مجوزهای گروه فایل اجرا می‌شود.
روی دایرکتوری‌ها: فایل‌های ایجاد شده گروه دایرکتوری را به ارث می‌برند.

┌──(ya3in㉿kali)-[~] └─$ chmod g+s shared_dir └─$ chmod 2770 shared_dir

توضیح: عدد 2 قبل از مجوزها نشان‌دهنده SGID است.

• Sticky Bit

روی دایرکتوری‌ها: فقط مالک فایل می‌تواند آن را حذف کند (حتی اگر دیگران مجوز نوشتن داشته باشند).

📝 مثال دایرکتوری /tmp:
┌──(ya3in㉿kali)-[~] └─$ ls -ld /tmp drwxrwxrwt 12 root root 4096 Apr 25 13:50 /tmp

توضیح: t در انتهای مجوزها نشان‌دهنده Sticky Bit است. هر کاربر می‌تواند در /tmp فایل بسازد، اما فقط خودش می‌تواند فایل خود را حذف کند.

┌──(ya3in㉿kali)-[~] └─$ chmod o+t shared_dir └─$ chmod 1777 shared_dir

توضیح: عدد 1 قبل از مجوزها نشان‌دهنده Sticky Bit است.

⚠️ نکته مهم:

مجوزهای ویژه (SUID, SGID, Sticky Bit) می‌توانند خطرات امنیتی ایجاد کنند. فقط در صورت نیاز و با آگاهی کامل از آنها استفاده کنید.

▍ مجوزهای پیش‌فرض با umask

umask مجوزهای پیش‌فرض فایل‌ها و دایرکتوری‌های جدید را تعیین می‌کند.

┌──(ya3in㉿kali)-[~] └─$ umask 0022 └─$ umask 027

توضیح: umask 027 یعنی فایل‌های جدید با مجوز 640 و دایرکتوری‌های جدید با مجوز 750 ایجاد می‌شوند.

📊 جدول مقادیر رایج umask:
umask مجوز فایل مجوز دایرکتوری
000 666 (rw-rw-rw-) 777 (rwxrwxrwx)
002 664 (rw-rw-r--) 775 (rwxrwxr-x)
022 644 (rw-r--r--) 755 (rwxr-xr-x)
027 640 (rw-r-----) 750 (rwxr-x---)
077 600 (rw-------) 700 (rwx------)
✅ تمرین پیشنهادی:
  • یک فایل جدید ایجاد کنید و با ls -l مجوزهای آن را ببینید.
  • با chmod 755 مجوزهای فایل را تغییر دهید.
  • با chown مالک فایل را تغییر دهید (با sudo).
  • با chmod u+s SUID را روی یک فایل تست فعال کنید.
  • با umask مجوزهای پیش‌فرض را تغییر دهید و یک فایل جدید بسازید.